package com.suning.sawp.intf.model;

import java.util.List;

import com.suning.sawp.dto.common.EmployeeInfo;
import com.suning.sawp.intf.model.vo.ModelRecommendBaseVo;
import com.suning.sawp.vo.csv.ExportCsvFileVo;
import com.suning.sawp.vo.model.ModelContributionAreaExResponse;
import com.suning.sawp.vo.model.ModelContributionAreaResponse;
import com.suning.sawp.vo.model.ModelContributionResponse;
import com.suning.sawp.vo.model.ModelSaleTopResponse;
import com.suning.sawp.vo.model.ModelValidAreaResponse;
import com.suning.sawp.vo.model.ModelValidInAreaResponse;
import com.suning.sawp.vo.model.ModelValidResponse;

/**
 * 后台样机分析接口
 * 
 * @author 15050519
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
public interface ModelAnalyseInService {

    /**
     * 查询全国样机有效率
     * 
     * @param cateCode
     * @param region5Code
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ModelValidResponse queryModelValid(String region5Code, String cateCode);

    /**
     * 查询大区或者分公司样机有效率
     * 
     * @param disCode
     * @param belongDisCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ModelValidInAreaResponse queryModelValidArea(String disCode, String belongDisCode, int currIndex, int size);
    
    ModelValidAreaResponse queryModelValidAreaEx(String orgLevel, String disCode, String brandCode,
            String belongsDisCode, String belongsBranchCode, String storeType, String saleMonth, Integer pageNo, Integer pageSize);

    /**
     * 查询全国样机贡献率
     * 
     * @param disCode
     * @param saleMonth
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ModelContributionResponse queryModelContribution(EmployeeInfo employeeInfo, String saleMonth, String storeType);

    /**
     * 
     * 查询大区或者分公司样机贡献率
     * 
     * @param belongRegion5Code
     * @param disCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ModelContributionAreaResponse queryModelContributionArea(String belongRegion5Code, String disCode, int currIndex, int size);

    ModelContributionAreaExResponse queryModelContributionAreaEx(String level,String disCode,String brandCode,String belongsDisCode,String belongsBranchCode,
            String storeType,String saleMonth, Integer pageNo, Integer pageSize);

    
    /**
     * 
     * 查询样机销售TOP排行
     * 
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ModelSaleTopResponse queryModelContributionTop(int currIndex, int size);

    /**
     * 下载有效性分析csv
     * 
     * @param disCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ExportCsvFileVo queryModelValidArea(final String disCode, String belongDisCode);
    
    /**
     * 
     * 功能描述:导出样机有效率 <br>
     * 〈功能详细描述〉
     *
     * @param orgLevel
     * @param disCode
     * @param brandCode
     * @param belongsDisCode
     * @param belongsBranchCode
     * @param storeType
     * @param saleMonth
     * @param pageNo
     * @param pageSize
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void exportModelValidAreaEx(String staffId, String orgLevel, String disCode, String brandCode,
            String belongsDisCode, String belongsBranchCode, String storeType, String saleMonth, Integer pageNo);
    
    /**
     * 
     * 功能描述: 导出样机贡献率<br>
     * 〈功能详细描述〉
     *
     * @param staffId
     * @param orgLevel
     * @param disCode
     * @param brandCode
     * @param belongsDisCode
     * @param belongsBranchCode
     * @param storeType
     * @param saleMonth
     * @param pageNo
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void exportModelContributionAreaEx(String staffId, String orgLevel, String disCode, String brandCode,
            String belongsDisCode, String belongsBranchCode, String storeType, String saleMonth, Integer pageNo);

    /**
     * 下载贡献率分析csv
     * 
     * @param disCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ExportCsvFileVo queryModelContributionArea(final String disCode);

    /**
     * 定时任务定时处理样机销售排行数据<br>
     * 生成CSV文件
     * 
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void createCommRankFileJob();

    /**
     * 功能描述: 分公司用户查询分公司样机推荐商品<br>
     * 〈功能详细描述〉
     * 
     * @param orgCode
     * @param cateCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<ModelRecommendBaseVo> queryRecommendCompany(String orgCode, String cateCode);

    /**
     * 功能描述: 大区用户查询大区样机推荐商品<br>
     * 〈功能详细描述〉
     * 
     * @param disCode
     * @param cateCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<ModelRecommendBaseVo> queryRecommendArea(String disCode, String cateCode);

    List<ModelRecommendBaseVo> queryModelTopTwenty(String disCode, String orgCode, String cateCode, String flag);

}
